AR Clip SDK
概要
AR Clip を使うと、App Clip 経由で WebGL コンテンツを配信しながら、ARKit と WebAR³ の VPS エンジンでローカライズされた AR 体験を提供できます。Immersal スタイルにならい、要件 → インストール → シーン構築 → VPS 起動 → WebGL ビルドの順で進めます。
必要条件
- Unity 2020 LTS 以降(2021+ で検証済み)
- ビルドターゲット WebGL
- AR Clip アップローダーへのアクセス (https://cdn.mobile.web-ar.studio/clip/pages/zip_uploader.html)
注意: Unity エディターでは多くの AR Clip API が
Application.isEditorで無効化されています。実機での挙動を確認するには WebGL ビルドを作成し、AR Clip モバイルアプリでテストしてください。
パッケージの導入
- Window → Package Manager を開きます。
- + → Add package from Git URL… をクリック。
https://github.com/WebAR-Studio/arclip_sdk.gitを入力して追加します。
インポート前に Assets/ARLib フォルダが残っている場合は削除し、重複シンボルエラーを回避してください。
error CS0433: The type 'ARLibTester' exists in both 'ARLib' and 'Assembly-CSharp'
サンプルのインポート
Package Manager → AR Clip → Samples から次を追加します。
- WebGLTemplates をインポートし、生成されたフォルダを
Assets/直下にコピーして Project Settings → Player → WebGL Template から選択できるようにします。 - TransparentBackground をインポートし、
TransparentBackground.jslibをAssets/Pluginsに移動して WebGL の透過レンダリングを有効にします。
シーンの準備
- 空の GameObject
ARClipControllerを作成します。 ARLibControllerを追加し、renderCameraにカメラを割り当てます。- カメラコンポーネントを無効化し、Clear Flags = Solid Color、背景色 RGBA(0,0,0,0) を設定します。
- (任意)サンプルに含まれる
ARLibTesterを追加して、エディターでイベントを擬似的に確認します。
最小構成のスクリプト
using UnityEngine;
using ARLib;
public class ARClipBootstrap : MonoBehaviour
{
[SerializeField] private Camera renderCamera;
private void OnEnable()
{
ARLibController.Initialized += HandleInitialized;
ARLibController.VPSPositionUpdated += HandleVpsPose;
}
private void OnDisable()
{
ARLibController.Initialized -= HandleInitialized;
ARLibController.VPSPositionUpdated -= HandleVpsPose;
}
private void Start()
{
ARLibController.SetRenderCamera(renderCamera);
ARLibController.Initialize();
}
private void HandleInitialized()
{
ARLibController.EnableCamera();
ARLibController.EnableAR();
ARLibController.EnableSurfaceTracking("horizontal");
}
private void HandleVpsPose(VPSPoseData pose)
{
Debug.Log($"VPS pose: {pose.Position}");
}
}
VPS ローカライズを開始
初期化後に VPS を設定し、ローカライズを開始します。
var settings = new VPSSettings
{
apiKey = "your-api-key",
locationIds = new[] { "your-location-id" }
};
ARLibController.SetupVPS(settings);
ARLibController.StartVPS();
監視すべき主なイベント:
ARLibController.VPSInitialized– VPS サブシステムの準備完了。ARLibController.VPSPositionUpdated– ローカライズされたポーズを取得。ARLibController.OnVPSErrorHappened– エラー内容を受信。
SetSendPhotoDelay や SetGpsAccuracyBarrier、SetFirstRequestDelay などのメソッドでリクエスト間隔を調整できます。
トラッキングモジュール
- 画像トラッキングを有効化する前に
AddTrackingImageで画像を登録し、TrackedImagesArrayUpdateの通知で読み込み完了を確認します。 EnableSurfaceTracking("horizontal" | "vertical" | "both")で平面検出を開始し、結果はSurfaceTrackingUpdatedで受け取ります。
ビルドとアップロード
- WebGL テンプレートの選択: Project Settings → Player → WebGL → Resolution and Presentation でコピーしたテンプレートを指定します。
- ビルド: File → Build Settings → WebGL → Build を実行します。
- 圧縮: 生成されたビルドを ZIP 化し、
index.htmlがルートにあることを確認します。 - アップロード: https://cdn.mobile.web-ar.studio/clip/pages/zip_uploader.html にアップロードします。
- テスト: 生成された QR コードを iOS 版 AR Clip アプリ (https://apps.apple.com/app/ar-clip/id6742754238) でスキャンして動作確認します。
トラブルシューティング
- カメラ映像が表示されない場合は、
TransparentBackground.jslibがAssets/Pluginsにあり、レンダーカメラが割り当て・無効化されているか確認してください。 - エディターで AR イベントが届かないのは仕様です。
ARLibTesterを利用するか WebGL ビルドで検証してください。 - 型の重複エラーが出る場合は、パッケージ導入前に古い
ARLibフォルダを削除してください。